<template>
  <div class="todo-container">
    <div class="todo-wrap">
      <TodoHeader/>
      <TodoList :todoData="todoData"/>
      <TodoFooter :todoData="todoData"/>
    </div>
  </div>
</template>

<script>
import TodoHeader from './views/TodoHeader';
import TodoList from './views/TodoList';
import TodoFooter from './views/TodoFooter';
export default {
  name: 'App',
  mounted(){
    // 绑定添加列表的方法
    this.$EventBus.$on('addTodoData',todoName => {this.todoData.push({id:Date.now(),todoName,isDone:false})});
    //绑定该变是否完成的方法
    this.$EventBus.$on('changeIsDone',id => {
      this.todoData.find(item => {
        if(item.id == id){
          item.isDone = !item.isDone;
        }
      })
    })
    //绑定该变全部的是否完成的方法
    this.$EventBus.$on('changeAllIsDone',bool => this.todoData.map(item => item.isDone = bool))
    //绑定删除的方法
    this.$EventBus.$on('removeItem',id => {
      if(id){
        this.todoData = this.todoData.filter(item => item.id != id);
      }else{
        this.todoData = this.todoData.filter(item => item.isDone != true);
      }
      
    })
  },
  beforeDestory(){
    this.$EventBus.$off('addTodoData');
    this.$EventBus.$off('changeIsDone');
  },
  components: {
    TodoHeader,
    TodoList,
    TodoFooter
  },
  data(){
    return {
      todoData: [
        {
          id: 1,
          todoName: '123',
          isDone: false
        }
      ]
    }
  }
}
</script>

<style>
/*base*/
body {
  background: #fff;
}

.btn {
  padding: 4px 12px;
  margin-bottom: 0;
  font-size: 14px;
  line-height: 20px;
  text-align: center;
  vertical-align: middle;
  cursor: pointer;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2),
    0 1px 2px rgba(0, 0, 0, 0.05);
  border-radius: 4px;
}

.btn-danger {
  color: #fff;
  background-color: #da4f49;
  border: 1px solid #bd362f;
}

.btn-danger:hover {
  color: #fff;
  background-color: #bd362f;
}

.btn:focus {
  outline: none;
}

/*app*/
.todo-container {
  width: 600px;
  margin: 0 auto;
}
.todo-container .todo-wrap {
  padding: 10px;
  border: 1px solid #ddd;
  border-radius: 5px;
}
</style>
